import { logger } from "#src/common/utils/logger.js";
import bcrypt from "bcryptjs";

export async function verifyPassword(user, password) {
    if (!user) {
        logger.warn('用户对象为空');
        return false;
    }
    if (!password) {
        logger.warn('密码为空');
        return false;
    }
   try {
        return await bcrypt.compare(password, user.password);
    } catch (error) {
        logger.error('密码验证失败', { error: error.message, userId: user.id }); // 添加用户ID便于追踪
        if (error.message.includes('invalid salt')) {
            logger.warn('无效的密码盐值', { userId: user.id });
            // 可考虑自动重置密码或提示管理员
        }
        return false;
    }
}

// 添加密码哈希函数
/**
 * 哈希密码
 * @param {string} password - 原始密码
 * @returns {Promise<string>} 加密后的密码
 */
export async function hashPassword(password) {
    if (!password) {
        throw new Error('密码不能为空');
    }
    const salt = await bcrypt.genSalt(10);
    return bcrypt.hash(password, salt);
}
